﻿using System;
using System.Reflection;

// 定义Person类
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    // 无参构造函数
    public Person()
    {
        Name = "Unknown";
        Age = 0;
    }

    // 带参构造函数
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    // 重写ToString方法
    public override string ToString()
    {
        return $"Name: {Name}, Age: {Age}";
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 获取Person类的Type对象
        Type personType = typeof(Person);

        // 1. 调用无参构造函数创建实例
        ConstructorInfo parameterlessConstructor = personType.GetConstructor(Type.EmptyTypes);
        if (parameterlessConstructor != null)
        {
            // 使用Invoke方法调用无参构造函数
            object person1 = parameterlessConstructor.Invoke(null);
            Console.WriteLine("使用无参构造函数创建的Person对象：");
            Console.WriteLine(person1);
        }

        // 2. 调用带参构造函数创建实例
        ConstructorInfo parameterizedConstructor = personType.GetConstructor(new Type[] { typeof(string), typeof(int) });
        if (parameterizedConstructor != null)
        {
            // 使用Invoke方法调用带参构造函数
            object person2 = parameterizedConstructor.Invoke(new object[] { "Alice", 25 });
            Console.WriteLine("\n使用带参构造函数创建的Person对象：");
            Console.WriteLine(person2);
        }
    }
}